/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package py.com.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author markos
 */
@Entity
@Table(name = "personas")
@NamedQueries({@NamedQuery(name = "Personas.findAll", query = "SELECT p FROM Personas p"), @NamedQuery(name = "Personas.findByDnPersona", query = "SELECT p FROM Personas p WHERE p.dnPersona = :dnPersona"), @NamedQuery(name = "Personas.findByDnCedula", query = "SELECT p FROM Personas p WHERE p.dnCedula = :dnCedula"), @NamedQuery(name = "Personas.findByDnApellidoNombre", query = "SELECT p FROM Personas p WHERE p.dnApellidoNombre = :dnApellidoNombre"), @NamedQuery(name = "Personas.findByDnSexo", query = "SELECT p FROM Personas p WHERE p.dnSexo = :dnSexo"), @NamedQuery(name = "Personas.findByDnFechaNacimiento", query = "SELECT p FROM Personas p WHERE p.dnFechaNacimiento = :dnFechaNacimiento"), @NamedQuery(name = "Personas.findByDnEdad", query = "SELECT p FROM Personas p WHERE p.dnEdad = :dnEdad"), @NamedQuery(name = "Personas.findByDnEstadoCivil", query = "SELECT p FROM Personas p WHERE p.dnEstadoCivil = :dnEstadoCivil"), @NamedQuery(name = "Personas.findByDnTelefono", query = "SELECT p FROM Personas p WHERE p.dnTelefono = :dnTelefono"), @NamedQuery(name = "Personas.findByDnDireccion", query = "SELECT p FROM Personas p WHERE p.dnDireccion = :dnDireccion")})
public class Personas implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(generator="personaGen", strategy=GenerationType.SEQUENCE)
    @SequenceGenerator(sequenceName="personas_dn_persona_seq", name="personaGen")
    @Basic(optional = false)
    @Column(name = "dn_persona")
    private Integer dnPersona;
    @Basic(optional = false)
    @Column(name = "dn_cedula")
    private int dnCedula;
    @Basic(optional = false)
    @Column(name = "dn_apellido_nombre")
    private String dnApellidoNombre;
    @Basic(optional = false)
    @Column(name = "dn_sexo")
    private char dnSexo;
    @Column(name = "dn_fecha_nacimiento")
    @Temporal(TemporalType.DATE)
    private Date dnFechaNacimiento;
    @Column(name = "dn_edad")
    private Integer dnEdad;
    @Column(name = "dn_estado_civil")
    private String dnEstadoCivil;
    @Column(name = "dn_telefono")
    private String dnTelefono;
    @Column(name = "dn_direccion")
    private String dnDireccion;
    @OneToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, mappedBy = "personas", fetch = FetchType.LAZY)
    private Set<PersonaDenuncia> personaDenunciaList;
    @JoinColumn(name = "dn_lugar_nacimiento", referencedColumnName = "ci_ciudad")
    @ManyToOne(fetch = FetchType.LAZY)
    private Ciudades dnLugarNacimiento;
    @JoinColumn(name = "dn_nacionalidad", referencedColumnName = "pa_pais")
    @ManyToOne(fetch = FetchType.LAZY)
    private Paises dnNacionalidad;
    @JoinColumn(name = "dn_pais_origen", referencedColumnName = "pa_pais")
    @ManyToOne(fetch = FetchType.LAZY)
    private Paises dnPaisOrigen;
    @JoinColumn(name = "dn_profesion", referencedColumnName = "pr_profesion")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Profesiones dnProfesion;

    public Personas() {
    }

    public Personas(Integer dnPersona) {
        this.dnPersona = dnPersona;
    }

    public Personas(Integer dnPersona, int dnCedula, String dnApellidoNombre, char dnSexo) {
        this.dnPersona = dnPersona;
        this.dnCedula = dnCedula;
        this.dnApellidoNombre = dnApellidoNombre;
        this.dnSexo = dnSexo;
    }

    public Integer getDnPersona() {
        return dnPersona;
    }

    public void setDnPersona(Integer dnPersona) {
        this.dnPersona = dnPersona;
    }

    public int getDnCedula() {
        return dnCedula;
    }

    public void setDnCedula(int dnCedula) {
        this.dnCedula = dnCedula;
    }

    public String getDnApellidoNombre() {
        return dnApellidoNombre;
    }

    public void setDnApellidoNombre(String dnApellidoNombre) {
        this.dnApellidoNombre = dnApellidoNombre;
    }

    public char getDnSexo() {
        return dnSexo;
    }

    public void setDnSexo(char dnSexo) {
        this.dnSexo = dnSexo;
    }

    public Date getDnFechaNacimiento() {
        return dnFechaNacimiento;
    }

    public void setDnFechaNacimiento(Date dnFechaNacimiento) {
        this.dnFechaNacimiento = dnFechaNacimiento;
    }

    public Integer getDnEdad() {
        return dnEdad;
    }

    public void setDnEdad(Integer dnEdad) {
        this.dnEdad = dnEdad;
    }

    public String getDnEstadoCivil() {
        return dnEstadoCivil;
    }

    public void setDnEstadoCivil(String dnEstadoCivil) {
        this.dnEstadoCivil = dnEstadoCivil;
    }

    public String getDnTelefono() {
        return dnTelefono;
    }

    public void setDnTelefono(String dnTelefono) {
        this.dnTelefono = dnTelefono;
    }

    public String getDnDireccion() {
        return dnDireccion;
    }

    public void setDnDireccion(String dnDireccion) {
        this.dnDireccion = dnDireccion;
    }

    public Set<PersonaDenuncia> getPersonaDenunciaList() {
        return personaDenunciaList;
    }

    public void setPersonaDenunciaList(Set<PersonaDenuncia> personaDenunciaList) {
        this.personaDenunciaList = personaDenunciaList;
    }

    public Ciudades getDnLugarNacimiento() {
        return dnLugarNacimiento;
    }

    public void setDnLugarNacimiento(Ciudades dnLugarNacimiento) {
        this.dnLugarNacimiento = dnLugarNacimiento;
    }

    public Paises getDnNacionalidad() {
        return dnNacionalidad;
    }

    public void setDnNacionalidad(Paises dnNacionalidad) {
        this.dnNacionalidad = dnNacionalidad;
    }

    public Paises getDnPaisOrigen() {
        return dnPaisOrigen;
    }

    public void setDnPaisOrigen(Paises dnPaisOrigen) {
        this.dnPaisOrigen = dnPaisOrigen;
    }

    public Profesiones getDnProfesion() {
        return dnProfesion;
    }

    public void setDnProfesion(Profesiones dnProfesion) {
        this.dnProfesion = dnProfesion;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (dnPersona != null ? dnPersona.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Personas)) {
            return false;
        }
        Personas other = (Personas) object;
        if ((this.dnPersona == null && other.dnPersona != null) || (this.dnPersona != null && !this.dnPersona.equals(other.dnPersona))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "py.com.domain.Personas[dnPersona=" + dnPersona + "]";
    }

}
